#ifndef _I2C_LKT4106_H
#define _I2C_LKT4106_H

#include "includes.h"

#define LKT4106_I2C_SPEED      400000      /* STM32 I2C 速率 */

#define LKT4106_I2C_OWN_ADDRESS7   0X0A     /* STM32 自身的 I2C 地址，这个地址只要与 STM32 外挂的 I2C 器件地址不一样即可 */



#define LKT4106_ADDRESS                             0X50









#define LKT4106_CMD_HEAD        "\x80\x08\x00\x00"      /**< LKT4106 Cmd 进入函数调用固定的head*/

#if 0 /**< 官方测试*/

#define LKT4106_CMD_INVERT          0X01   /**<数据取反 nLen(2)+LKT4106_CMD_HEAD(4)+Cmd_Len(1)+LKT4106_CMD_INVERT(1)+DATA*/
#define LKT4106_CMD_GET_RANDOM      0X02   /**<得到随机数 nLen(2)+LKT4106_CMD_HEAD(4)+Cmd_Len(1)+LKT4106_CMD_GET_RANDOM(1)+Random_Len(1)*/
#define LKT4106_CMD_GET_ID          0X03   /**<得到芯片ID nLen(2)+LKT4106_CMD_HEAD(4)+Cmd_Len(1)+LKT4106_CMD_GET_ID(1)*/
#define LKT4106_CMD_SET_KEY         0X04   /**<得到芯片ID nLen(2)+LKT4106_CMD_HEAD(4)+Cmd_Len(1)+LKT4106_CMD_SET_KEY(1)+KEY_LEN(1)+KEY*/
#define LKT4106_CMD_DES             0X05   /**<des加密 nLen(2)+LKT4106_CMD_HEAD(4)+Cmd_Len(1)+LKT4106_CMD_DES(1)+DATA_LEN(1)+DATA*/
#define LKT4106_CMD_UNDES           0X06   /**<des解密 nLen(2)+LKT4106_CMD_HEAD(4)+Cmd_Len(1)+LKT4106_CMD_UNDES(1)+DATA_LEN(1)+DATA*/
#define LKT4106_CMD_WRITE_NVM       0X07   /**<des加密 nLen(2)+LKT4106_CMD_HEAD(4)+Cmd_Len(1)+LKT4106_CMD_WRITE_NVM(1)+NVM_ADDR[2]+DATA_LEN(1)+DATA*/
#define LKT4106_CMD_READ_NVM        0X08  /**<des解密 nLen(2)+LKT4106_CMD_HEAD(4)+Cmd_Len(1)+LKT4106_CMD_READ_NVM(1)+NVM_ADDR[2]+DATA_LEN(1)*/

#endif



#define LKT4106_CMD_GET_RANDOM            0X01  /**<得到16位的随机数**/
#define LKT4106_CMD_GET_EN_NET_KEY        0X02  /**<被过程密钥3des后的密文**/



typedef struct _St_LKT_BUF{
	UINT32	FLAG;
	UINT8	BUF[32];
}St_LKT_BUF;	

extern  St_LKT_BUF PassWord_LKT;





void LKT4106_Init(void);
void LKT4106_PIN_Reset(void);
INT32 LKT4106_I2C_Write(UINT8* pBuffer,UINT32 pBuffer_len);
INT32 LKT4106_I2C_Read(UINT8* pBuffer,UINT32 pBuffer_len);
INT32 Get_Net_Key(UINT8* net_key);
#endif
